/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package prueba.rutas;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.Point2D;
import java.util.ArrayList;
import java.util.Random;

/**
 *
 * @author Marcy
 */
public class Vehiculo {
    private ArrayList<Ruta> circulacion;
    private Point2D posicion;
    private Random alea;
    private int velocidad;
    private Rutas rutas;
    private ArrayList<Vehiculo> trafico;
    private boolean existo;
    public Vehiculo(ArrayList<Vehiculo> mt ){
        trafico = mt;
    alea = new Random();
    rutas = new Rutas();
        existo =true;
        velocidad = 1;// + alea.nextInt(20);
        circulacion = new ArrayList<>();
        posicion = new Point2D.Double(21*Mapa.FW+Mapa.FW/2 ,10*Mapa.FH+4*Mapa.FH/5);
        double valor = alea.nextDouble()*100.0;
        System.out.println("SSSSSSSSSS" +  valor);
//   if(valor >= 0 && valor < 31.7)
//           {circulacion.add(rutas.SANJINEZJK);
//            circulacion.add(rutas.COLOMBIABC);
//            posicion = new Point2D.Double(0*Mapa.FW ,9*Mapa.FH+4*Mapa.FH/5);}
//   else
//     if(valor >= 0 && valor < 31.7)
//           {circulacion.add(rutas.SANJINEZJK);
//            circulacion.add(rutas.SANJINEZMN);
//            circulacion.add(rutas.MURILLONP);
//            posicion = new Point2D.Double(0*Mapa.FW ,9*Mapa.FH+4*Mapa.FH/5);
//           }
//     else
//       if(valor >= 0 && valor < 31.7){
//           circulacion.add(rutas.SANJINEZJK);
//           circulacion.add(rutas.SANJINEZMN);
//           circulacion.add(rutas.SANJINEZQR);
//           circulacion.add(rutas.VENEZUELA);
//           posicion = new Point2D.Double(0*Mapa.FW ,9*Mapa.FH+4*Mapa.FH/5);}
//     else
//       if(valor >= 0 && valor < 31.7){
//           circulacion.add(rutas.SANJINEZJK);
//           circulacion.add(rutas.SANJINEZMN);
//           circulacion.add(rutas.SANJINEZQR);
//           circulacion.add(rutas.SANJINEZUV);
//           circulacion.add(rutas.UNIV);
//           posicion = new Point2D.Double(0*Mapa.FW ,9*Mapa.FH+4*Mapa.FH/5);}
//   else
       if(valor >= 0 && valor < 31.7){
            circulacion.add(rutas.SANJINEZJK);
            circulacion.add(rutas.SANJINEZMN);
            circulacion.add(rutas.SANJINEZQR);
            circulacion.add(rutas.SANJINEZUV);
            circulacion.add(rutas.SANJINEZVY);
            posicion = new Point2D.Double(0*Mapa.FW ,9*Mapa.FH+4*Mapa.FH/5);}
     else
//     if(valor >= 31.7 && valor < 33.6)
//           {circulacion.add(rutas.COLOMBIAMD);
//           circulacion.add(rutas.SANJINEZMD);
//           circulacion.add(rutas.COLOMBIABC);
//           posicion = new Point2D.Double(1*Mapa.FW ,16*Mapa.FH);}
//   else
       if(valor >= 31.7 && valor < 33.6)
          {circulacion.add(rutas.COLOMBIAOM);
          circulacion.add(rutas.SANJINEZMN);
          circulacion.add(rutas.MURILLONP); 
          posicion = new Point2D.Double(1*Mapa.FW ,16*Mapa.FH);}
   else
//       if(valor >= 31.7 && valor < 33.6){
//            circulacion.add(rutas.COLOMBIAOM);
//            circulacion.add(rutas.SANJINEZMN);
//            circulacion.add(rutas.SANJINEZQR); 
//            circulacion.add(rutas.VENEZUELA); 
//            posicion = new Point2D.Double(1*Mapa.FW ,16*Mapa.FH);}
//     else
//       if(valor >= 31.7 && valor < 33.6){
//            circulacion.add(rutas.COLOMBIAOM);
//            circulacion.add(rutas.SANJINEZMN);
//            circulacion.add(rutas.SANJINEZQR); 
//            circulacion.add(rutas.SANJINEZUV); 
//            circulacion.add(rutas.UNIV); 
//            posicion = new Point2D.Double(1*Mapa.FW ,16*Mapa.FH);}
//       if(valor >= 31.7 && valor < 33.6){
//            circulacion.add(rutas.COLOMBIAOM);
//            circulacion.add(rutas.SANJINEZMN);
//            circulacion.add(rutas.SANJINEZQR); 
//            circulacion.add(rutas.SANJINEZUV); 
//            circulacion.add(rutas.SANJINEZVY); 
//            posicion = new Point2D.Double(1*Mapa.FW ,16*Mapa.FH);}
//      else
//        if(valor >= 33.6 && valor < 50.9){
//            circulacion.add(rutas.MURILLOSQ);
//            circulacion.add(rutas.SANJINEZQR);
//            circulacion.add(rutas.SANJINEZUV);
//            circulacion.add(rutas.UNIV);
//            posicion = new Point2D.Double(9*Mapa.FW,16*Mapa.FH);}
//    else
//       if(valor >= 33.6 && valor < 50.9){
//            circulacion.add(rutas.MURILLOSQ);
//            circulacion.add(rutas.SANJINEZQR);
//            circulacion.add(rutas.SANJINEZUV);
//            circulacion.add(rutas.SANJINEZVY);
//            posicion = new Point2D.Double(9*Mapa.FW,16*Mapa.FH);}
//       else
//        if(valor >= 33.6 && valor < 50.9){
//            circulacion.add(rutas.MURILLOSQ);
//            circulacion.add(rutas.SANJINEZQR);
//            circulacion.add(rutas.VENEZUELA);
//            posicion = new Point2D.Double(9*Mapa.FW,16*Mapa.FH);}
//       else
        if(valor >= 33.6 && valor < 50.9){
            circulacion.add(rutas.MURILLOEQ);
            circulacion.add(rutas.SANJINEZED2);
            circulacion.add(rutas.SANJINEZD2D);
            circulacion.add(rutas.SANJINEZMD);
            circulacion.add(rutas.SANJINEZBA);
            posicion = new Point2D.Double(9*Mapa.FW,16*Mapa.FH);}
      else 
//        if(valor >= 33.6 && valor < 50.9){
//            circulacion.add(rutas.MURILLOEQ);
//            circulacion.add(rutas.SANJINEZED2);
//            circulacion.add(rutas.SANJINEZD2D);
//            circulacion.add(rutas.SANJINEZMD);
//            circulacion.add(rutas.COLOMBIABC);
//            posicion = new Point2D.Double(9*Mapa.FW,16*Mapa.FH);}
//      else 
            
//        if(valor >= 50.9 && valor < 70.2){
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.VENEZUELAIR);
//              circulacion.add(rutas.VENEZUELA);
//               posicion = new Point2D.Double(21*Mapa.FW+Mapa.FW/2,9*Mapa.FH+4*Mapa.FH/5);}
//     else    
//         if(valor >= 50.9 && valor < 70.2){
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.SANJINEZIH);
//              circulacion.add(rutas.SANJINEZED2);
//              circulacion.add(rutas.MURILLODP);
//              circulacion.add(rutas.MURILLONP);
//              posicion = new Point2D.Double(21*Mapa.FW+Mapa.FW/2,9*Mapa.FH+4*Mapa.FH/5);}    
//       else   
        if(valor >= 50.9 && valor < 70.2){
              circulacion.add(rutas.SANJINEZIZ);
              circulacion.add(rutas.SANJINEZIH);
              circulacion.add(rutas.SANJINEZED2);
              circulacion.add(rutas.SANJINEZD2D);
              circulacion.add(rutas.SANJINEZMD);
              circulacion.add(rutas.SANJINEZBA);
              posicion = new Point2D.Double(21*Mapa.FW+Mapa.FW/2,9*Mapa.FH+4*Mapa.FH/5);}
     else
//        if(valor >= 50.9 && valor < 70.2){
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.SANJINEZIH);
//              circulacion.add(rutas.SANJINEZED2);
//              circulacion.add(rutas.SANJINEZD2D);
//              circulacion.add(rutas.SANJINEZMD);
//              circulacion.add(rutas.COLOMBIABC);
//              posicion = new Point2D.Double(21*Mapa.FW+Mapa.FW/2,9*Mapa.FH+4*Mapa.FH/5);}
//     else    
       if(valor >= 70.2 && valor < 90.4){
              circulacion.add(rutas.AVUNIV);
              circulacion.add(rutas.SANJINEZIZ);
              circulacion.add(rutas.VENEZUELAIR);
              circulacion.add(rutas.VENEZUELA);
              posicion = new Point2D.Double(20*Mapa.FW+Mapa.FW/2,0*Mapa.FH);}
     else
//       if(valor >= 70.2 && valor < 90.4){
//              circulacion.add(rutas.AVUNIV);
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.SANJINEZIH);
//              circulacion.add(rutas.SANJINEZED2);
//              circulacion.add(rutas.MURILLODP);
//              circulacion.add(rutas.MURILLONP);
//              posicion = new Point2D.Double(20*Mapa.FW+Mapa.FW/2,0*Mapa.FH);}
//     else
//       if(valor >= 70.2 && valor < 90.4){
//              circulacion.add(rutas.AVUNIV);
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.SANJINEZIH);
//              circulacion.add(rutas.SANJINEZED2);
//              circulacion.add(rutas.SANJINEZD2D);
//              circulacion.add(rutas.SANJINEZMD);
//              circulacion.add(rutas.COLOMBIABC);
//              posicion = new Point2D.Double(20*Mapa.FW+Mapa.FW/2,0*Mapa.FH);}
//     else
//       if(valor >= 70.2 && valor < 90.4){
//              circulacion.add(rutas.AVUNIV);
//              circulacion.add(rutas.SANJINEZIZ);
//              circulacion.add(rutas.SANJINEZIH);
//              circulacion.add(rutas.SANJINEZED2);
//              circulacion.add(rutas.SANJINEZD2D);
//              circulacion.add(rutas.SANJINEZMD);
//              circulacion.add(rutas.SANJINEZBA);
//              posicion = new Point2D.Double(20*Mapa.FW+Mapa.FW/2,0*Mapa.FH);}
//     else
//        if(valor >= 90.4 && valor <= 100){
//                circulacion.add(rutas.XTERMINAL);
//                circulacion.add(rutas.SANJINEZED2);
//                circulacion.add(rutas.SANJINEZD2D);
//                circulacion.add(rutas.SANJINEZMD);
//                circulacion.add(rutas.COLOMBIABC);
//                posicion = new Point2D.Double(15*Mapa.FW,0*Mapa.FH);}
//       else
//        if(valor >= 90.4 && valor <= 100){
//                circulacion.add(rutas.XTERMINAL);
//                circulacion.add(rutas.SANJINEZED2);
//                circulacion.add(rutas.SANJINEZD2D);
//                circulacion.add(rutas.SANJINEZMD);
//                circulacion.add(rutas.SANJINEZBA);
//                posicion = new Point2D.Double(15*Mapa.FW,0*Mapa.FH);}
//       else
        if(valor >= 90.4 && valor <= 100){
                circulacion.add(rutas.XTERMINAL);
                circulacion.add(rutas.SANJINEZED2);
                circulacion.add(rutas.MURILLODP);
                posicion = new Point2D.Double(15*Mapa.FW,0*Mapa.FH);}
                circulacion.get(0).estado = true;
    }
    
    public boolean estado(){
        return existo;
    }
    
    public void cambioEstado(){
        existo = false;
    }
    
    public void moverse(Point2D destino){
       System.out.println("meta: "+ destino.toString());
           
           
       if(destino.getX()>posicion.getX())
       {
           if(destino.getX()%posicion.getX() < 0)
            posicion.setLocation(posicion.getX()+3, posicion.getY());
       }
       else
        {    if(destino.getX()%posicion.getX() >= 0)
            posicion.setLocation(posicion.getX()-3, posicion.getY());
        }
       
      if(destino.getY()>posicion.getY()){
        if((destino.getY()%posicion.getY() <=0  ))
            posicion.setLocation(posicion.getX(), posicion.getY()+1);}
      else{ 
            if(destino.getY()%posicion.getY() >0)
            posicion.setLocation(posicion.getX(), posicion.getY()-1);}
      
    
    }
    public void moverseMarcyx(int m, Point2D destino){
        System.out.println("meta: "+ destino.toString());
        if(posicion.getX() < destino.getX() )
            posicion.setLocation(posicion.getX()+velocidad, movimientox(m,posicion.getX()+velocidad) );
        else
            if(posicion.getX()!= destino.getX())
            posicion.setLocation(posicion.getX()-velocidad, movimientox(m,posicion.getX()-velocidad) );
    }
    public void moverseMarcyy(int m, Point2D destino){
        if(posicion.getY() < destino.getY() )
             posicion.setLocation(movimientoy(m,posicion.getY()+velocidad),posicion.getY()+velocidad  );
        else
            if(posicion.getY()!= destino.getY())
            posicion.setLocation(movimientoy(m,posicion.getY()-velocidad),posicion.getY()-velocidad);
    }
    
    public double movimientox(int m, double valor){
        if(m == 100) return 9.8*Mapa.FH + 0.05*Mapa.FH*valor/Mapa.FW;
        if(m == 200) return 9.76*Mapa.FH + 0.06*Mapa.FH*valor/Mapa.FW;
        if(m == 300) return 9.49*Mapa.FH + 0.09*Mapa.FH*valor/Mapa.FW;
        if(m == 400) return 9*Mapa.FH + 0.12*Mapa.FH*valor/Mapa.FW;
        else return 0;
    }
    public double movimientoy(int y, double valor){
        if(y == 500) return 7.666667 *Mapa.FW - 0.41666667*Mapa.FW*valor/Mapa.FH;
        if(y == 510) return 9.75 *Mapa.FW - 0.5468*Mapa.FW*valor/Mapa.FH;
        if(y == 600) return 14.614035*Mapa.FW - 0.350877*Mapa.FW*valor/Mapa.FH;
        if(y == 610) return 14.1612*Mapa.FW - 0.32258*Mapa.FW*valor/Mapa.FH;
        if(y == 601) return 12.071929 *Mapa.FW - 0.29824*Mapa.FW*valor/Mapa.FH;
        if(y == 602) return 12.086*Mapa.FW - 0.26388888*Mapa.FW*valor/Mapa.FH;
        if(y == 701) return 15 *Mapa.FW - 0.051*Mapa.FW*valor/Mapa.FH;
        if(y == 800) return 20.76*Mapa.FW - 0.36*Mapa.FW*valor/Mapa.FH;
        if(y == 801) return 41.8*Mapa.FW - 2.5*Mapa.FW*valor/Mapa.FH;
        if(y == 900) return 17*Mapa.FW + 0.2*Mapa.FW*valor/Mapa.FH;
        if(y == 1001)return 20.5 *Mapa.FW- 0.071428*Mapa.FW*valor/Mapa.FH;
        else return 0;
    }
      
    
    public void dibujarme(Graphics2D g2){
        g2.setColor(Color.red);
        g2.fillOval((int)Math.floor(posicion.getX()) -5,(int) Math.floor(posicion.getY()) -5, 10, 10);

    }    
    
    public void conducir(){
    
        for (int i = 0; i < circulacion.size(); i++) {
            Ruta aux = circulacion.get(i);
            switch(aux.numeral){
                
               case 100:
                   if(!aux.estado) break;
                   System.out.println("circulacion 100" );
                   if(posicion.getX() >=0*Mapa.FW && posicion.getX() < 2*Mapa.FW+4*Mapa.FW/5 ){
                    if(posicion.getY()>=9*Mapa.FH+4*Mapa.FH/5 && posicion.getY()<=10*Mapa.FH ){
                        aux.estado = true;
                      moverseMarcyx(100, new Point2D.Double(2*Mapa.FW+4*Mapa.FW/5,10*Mapa.FH));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 100");
                   if(circulacion.size() - i > 1)
                   circulacion.get(i+1).estado = true;
                          
                    }
                     break;
               case 101:
                   if(!aux.estado) break;
                   System.out.println("circulacion 101" );
                   if(posicion.getX() <=2*Mapa.FW+(4*Mapa.FW/5)   && posicion.getX() > 0*Mapa.FW ){
                      aux.estado = true;
                      moverse(new Point2D.Double(0*Mapa.FW, 9*Mapa.FH+Mapa.FH/2));}
                   else{ aux.estado = false;
                        System.err.println("Entro a else 101");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                        }
                     break;
               case 200:
                   if(!aux.estado) break;
                   System.out.println("circulacion 200");
                   if(posicion.getX() >=2*Mapa.FW+4*Mapa.FW/5 && posicion.getX() <9*Mapa.FW ){
                    if(posicion.getY()>=9*Mapa.FH && posicion.getY()<=10*Mapa.FH+Mapa.FH/3 ){
                        aux.estado = true;
                      moverseMarcyx(200,new Point2D.Double(9*Mapa.FW, 10*Mapa.FH+Mapa.FH/3)); }
                   }               
                   else{ aux.estado = false; 
                   if(circulacion.size() - i > 1)
                         circulacion.get(i+1).estado = true;
                          System.err.println("Entro a else 200");
                    }
                     break;
                   
                           
               case 201:
                   if(!aux.estado) break;
                   System.out.println("circulacion 201" );
                   if(posicion.getX() > 5*Mapa.FW+Mapa.FW/2  && posicion.getX()<=9*Mapa.FW+Mapa.FW/2){
                    if(posicion.getY()>=9*Mapa.FH+3*Mapa.FH/5 &&posicion.getY()<=9*Mapa.FH+4*Mapa.FH/5){
                        aux.estado = true;
                      moverse(new Point2D.Double(5*Mapa.FW+Mapa.FW/2  , 9*Mapa.FH+3*Mapa.FH/5));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 201");
                      if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;
               case 202:
                   if(!aux.estado) break;
                   System.out.println("circulacion 201" );
                   if(posicion.getX() > 2*Mapa.FW+(4*Mapa.FW/5)  && posicion.getX()<=5*Mapa.FW+Mapa.FW/2 ){
                    if(posicion.getY()>=9*Mapa.FH+3*Mapa.FH/5 &&posicion.getY()<=9*Mapa.FH+4*Mapa.FH/5){
                        aux.estado = true;
                      moverse(new Point2D.Double(2*Mapa.FW+(4*Mapa.FW/5)  , 9*Mapa.FH+3*Mapa.FH/5));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 201");
                      if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;
                   
               case 300:
                   if(!aux.estado) break;
                   System.out.println("circulacion 300");
                   if(posicion.getX() >=9*Mapa.FW && posicion.getX() <16*Mapa.FW+(4*Mapa.FW/5) ){
                    if(posicion.getY()>=9*Mapa.FH+Mapa.FH/3 &&posicion.getY()<=11*Mapa.FH){
                        aux.estado = true;
                      moverseMarcyx(300, new Point2D.Double(16*Mapa.FW+(4*Mapa.FW/5), 11*Mapa.FH));}
                   }
                  else{ aux.estado = false;
                        System.err.println("Entro a else");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                        
                   }
                     break; 
                   
                 case 301:
                   if(!aux.estado) break;
                   System.out.println("circulacion 301" );
                   if(posicion.getX()>9*Mapa.FW+Mapa.FW/2 && posicion.getX()<=15*Mapa.FW){
                    if(posicion.getY()>=9*Mapa.FH && posicion.getY()<=9*Mapa.FH+(4*Mapa.FH/5)){  
                        aux.estado = true;
                      moverse(new Point2D.Double(9*Mapa.FW+Mapa.FW/2, 9*Mapa.FH+4*Mapa.FH/5));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 301");
                      if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;           

              case 400:
                   if(!aux.estado) break;
                   System.out.println("circulacion 400");
                  if(posicion.getX() >=14*Mapa.FW+(4*Mapa.FW/5) && posicion.getX() < 19*Mapa.FW+Mapa.FW/3)
                   {
                   if(posicion.getY()>=11*Mapa.FH &&posicion.getY()<=11*Mapa.FH+Mapa.FH/3){
                        aux.estado = true;
                     moverseMarcyx(400,new Point2D.Double(19*Mapa.FW+Mapa.FW/3, 11*Mapa.FH+Mapa.FH/3));}
                   }else{ aux.estado = false;
                        System.err.println("Entro a else 400");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                           
                    }
                     break;
                  
              case 410:
                   if(!aux.estado) break;
                   System.out.println("circulacion 410");
                  if(posicion.getX() > 19*Mapa.FW &&posicion.getX() <=23*Mapa.FW+(4*Mapa.FW/5))
                   {
                   if(posicion.getY()>=11*Mapa.FH &&posicion.getY()<=11*Mapa.FH+Mapa.FH/2){
                        aux.estado = true;
                     moverseMarcyx(300,new Point2D.Double(22*Mapa.FW+Mapa.FW/3, 11*Mapa.FH+Mapa.FH/3));}
                   }else{ aux.estado = false;
                        System.err.println("Entro a else 410");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                                          }
                     break;
               case 401:
                   if(!aux.estado) break;
                   System.out.println("circulacion 401" );
                   if(posicion.getX()> 14*Mapa.FW+Mapa.FW/2  && posicion.getX()<=17*Mapa.FW+Mapa.FW/3){
                    if(posicion.getY()>9*Mapa.FH+Mapa.FH/2 && posicion.getY()<=9*Mapa.FH+4*Mapa.FH/5){
                        aux.estado = true;
                      moverse(new Point2D.Double(14*Mapa.FW+Mapa.FW/2, 9*Mapa.FH+4*Mapa.FH/5));}
                   }
                   else{ aux.estado = false;
                      System.err.println("Entro a else 401");
                      if(circulacion.size() - i >1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;
               case 402:
                   if(!aux.estado) break;
                   System.out.println("circulacion 402" );
                   if(posicion.getX()> 17*Mapa.FW+Mapa.FW/3  && posicion.getX()<=23*Mapa.FW){
                    if(posicion.getY()>9*Mapa.FH+Mapa.FH/2 && posicion.getY()<=9*Mapa.FH+4*Mapa.FH/5){
                        aux.estado = true;
                      moverse(new Point2D.Double(17*Mapa.FW+Mapa.FW/3, 9*Mapa.FH+4*Mapa.FH/5));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 402");
                      if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;

               case 500:
                   if(!aux.estado) break;
                   System.out.println("circulacion 500" );
                   if(posicion.getX() >=1*Mapa.FW &&posicion.getX()<3*Mapa.FW+Mapa.FW/2){
                    if(posicion.getY()>=10*Mapa.FH &&posicion.getY()<=16*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(500,new Point2D.Double(3*Mapa.FW+Mapa.FW/2, 10*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 500");
                        
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                           }
                     break;
               case 510:
                   if(!aux.estado) break;
                   System.out.println("circulacion 510" );
                   if(posicion.getX() >=1*Mapa.FW &&posicion.getX()<4*Mapa.FW+Mapa.FW/2){
                    if(posicion.getY()>=9*Mapa.FH &&posicion.getY()<=16*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(510,new Point2D.Double(4*Mapa.FW+Mapa.FW/2, 9*Mapa.FH+3*Mapa.FH/5));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 510");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                           }
                     break;
                   
               case 501:
                   if(!aux.estado) break;
                   System.out.println("circulacion 501" );
                   if(posicion.getX() >2*Mapa.FW &&posicion.getX()<=3*Mapa.FW){
                    if(posicion.getY()>=0*Mapa.FH &&posicion.getY()<=10*Mapa.FH+(3*Mapa.FH/5)){
                       aux.estado = true;
                      moverseMarcyy(501,new Point2D.Double(2*Mapa.FW+(4*Mapa.FW/5), 0*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 501");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;
                   
                   
               case 600:
                   if(!aux.estado) break;
                   System.out.println("circulacion 600" );
                   if(posicion.getY()>=10*Mapa.FH+4*Mapa.FH/5 && posicion.getY()<=16*Mapa.FH ){
                    if(posicion.getX() >=9*Mapa.FW && posicion.getX() < 11*Mapa.FW){
                        aux.estado = true;
                      moverseMarcyy(600,new Point2D.Double(11*Mapa.FW,10*Mapa.FH));}
                   }else{ aux.estado = false;
                        System.err.println("Entro a else");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
               case 610:
                   if(!aux.estado) break;
                   System.out.println("circulacion 610" );
                   if(posicion.getX() >=9*Mapa.FW && posicion.getX() < 11*Mapa.FW){
                    if(posicion.getY()>=9*Mapa.FH+4*Mapa.FH/5 && posicion.getY()<=16*Mapa.FH ){
                        aux.estado = true;
                      moverseMarcyy(610,new Point2D.Double(11*Mapa.FW,9*Mapa.FH+4*Mapa.FH/5));}
                   }else{ aux.estado = false;
                        System.err.println("Entro a else");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                    }
                     break;   
               case 601:
                   if(!aux.estado) break;
                   System.out.println("circulacion 601" );
                   if(posicion.getX() >=7*Mapa.FW+Mapa.FW/3 &&posicion.getX()<=10*Mapa.FW){
                    if(posicion.getY()>=8*Mapa.FH &&posicion.getY()<=16*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(601,new Point2D.Double(7*Mapa.FW+Mapa.FW/3, 16*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 601");
                         if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;    
                case 602:
                   if(!aux.estado) break;
                   System.out.println("circulacion 602" );
                   if(posicion.getX() >7*Mapa.FW &&posicion.getX()<10*Mapa.FW){
                    if(posicion.getY()>=9*Mapa.FH &&posicion.getY()<=17*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(602,new Point2D.Double(7*Mapa.FW+3*Mapa.FW/5, 16*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 602");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;}
                     break;    
                    
                case 701:
                   if(!aux.estado) break;
                   System.out.println("circulacion 701" );
                    if(posicion.getY()>=0*Mapa.FH &&posicion.getY()<9*Mapa.FH+(4*Mapa.FH/5)){
                   if(posicion.getX() >14*Mapa.FW+Mapa.FW/2 &&posicion.getX()<=15*Mapa.FW){
                       aux.estado = true;
                      moverseMarcyy(701,new Point2D.Double(14*Mapa.FW+Mapa.FW/2,9*Mapa.FH+(4*Mapa.FH/5)));}
                      }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 701");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;    
                case 800:
                   if(!aux.estado) break;
                   System.out.println("circulacion 800" );
                  if(posicion.getX() >=14*Mapa.FW &&posicion.getX()<=17*Mapa.FW+(4*Mapa.FW/5)){
                    if(posicion.getY()>=8*Mapa.FH+Mapa.FH/2 &&posicion.getY()<=16*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(800,new Point2D.Double(15*Mapa.FW, 16*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 800");
                        
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
//                        else
//                            trafico.remove(this);
                          
                    }
                     break;    
                case 801:
                   if(!aux.estado) break;
                   System.out.println("circulacion 801" );
                       if(posicion.getX() >17*Mapa.FW+Mapa.FW/5 &&posicion.getX()<=17*Mapa.FW+Mapa.FW/3){
                      if(posicion.getY()>9*Mapa.FH &&posicion.getY()<11*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(801,new Point2D.Double(16*Mapa.FW+4*Mapa.FW/5, 11*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 801");
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                        
                          
                    }
                     break;    
                  
                case 900:
                   if(!aux.estado) break;
                   System.out.println("circulacion 900" );
                    System.out.println(posicion.getX()+"......"+posicion.getY());
                   if(posicion.getX() >=19*Mapa.FW &&posicion.getX()<=20*Mapa.FW+Mapa.FW/3){
                    if(posicion.getY()>=10*Mapa.FH+Mapa.FH/3 &&posicion.getY()<=16*Mapa.FH){
                       aux.estado = true;
                      moverseMarcyy(900,new Point2D.Double(20*Mapa.FW+Mapa.FW/3, 16*Mapa.FH));}
                   }else{ 
                       aux.estado = false;
                        System.err.println("Entro a else 900");
                        
                        if(circulacion.size() - i > 1)
                          circulacion.get(i+1).estado = true;
                          
                    }
                     break;    
                case 1001:
                   if(!aux.estado) break;
                   System.out.println("circulacion 1001" );
                   if(posicion.getY()>=0*Mapa.FH && posicion.getY()<9*Mapa.FH+4*Mapa.FH/5){  
                     if(posicion.getX() >19*Mapa.FW+(4*Mapa.FW/5) && posicion.getX() < 21*Mapa.FW+Mapa.FW/2){
                         aux.estado = true;
                         
                    moverseMarcyy(1001,new Point2D.Double(19*Mapa.FW+(4*Mapa.FW/5) , 9*Mapa.FH+(4*Mapa.FH/5)));}
                   }else{ aux.estado = false;
                      System.err.println("Entro a else 1001");
                      if(circulacion.size() - i >1)
                          circulacion.get(i+1).estado = true;
                            try {} catch (Exception e) {}
                    }
                     break;
            }
        }
       // trafico.remove(this);
    }
}